import axios from 'axios';

// 配置 Axios 的基础 URL，这样就不用在每个请求里都写 'http://localhost:8080'
const apiClient = axios.create({
  baseURL: 'http://localhost:8081', // 注意！这里的端口号是你的后端端口
  headers: {
    'Content-Type': 'application/json'
  }
});

// 定义一个函数，用于获取所有分类的消息
export const fetchMessagesForUser = (userId) => {
  // 使用 Promise.all 并行发起所有请求，提高效率
  return Promise.all([
    apiClient.get('/Home/urgent', { params: { userId } }),
    apiClient.get('/Home/teachingAffairs', { params: { userId } }),
    apiClient.get('/Home/researchAffairs', { params: { userId } }),
    apiClient.get('/Home/academicCompetition', { params: { userId } }),
    apiClient.get('/Home/learningTraining', { params: { userId } })
  ]);
};

/**
 * 【新增】标记任务为已处理（已读/已办）
 * @param {number} taskId 任务的ID
 * @param {string} newStatus 新的状态 ('已读' 或 '已办')
 * @returns {Promise} Axios的Promise对象
 */
export const markTaskAsHandled = (taskId, newStatus) => {
  // 使用模板字符串动态构建URL
  // 第三个参数是 Axios 的配置对象，我们在这里传递查询参数
  return apiClient.put(`/Home/messages/${taskId}/status`, null, {
    params: {
      status: newStatus
    }
  });
};

/**
 * 【新增】根据任务ID获取其详细信息
 * @param {number} taskId - 任务的ID
 * @returns {Promise<AxiosResponse<any>>} - 包含任务详情的 Axios 响应
 */
export const fetchTaskDetail = (taskId) => {
  return apiClient.get('/matter/detail', {
    params: {
      messageId: taskId
    }
  });
};

// ========================================================
// 【在这里添加新方法】
// ========================================================

/**
 * 根据消息ID获取Excel文件
 * @param {string} messageId - 消息的ID
 * @returns {Promise<AxiosResponse<Blob>>} - 包含文件Blob的Axios响应
 */
export const fetchExcelFile = (messageId) => {
  // 调用你后端写好的接口 GET /Home/excelFile
  return apiClient.get('/Home/excelFile', {
    params: {
      messageId: messageId
    },
    // 关键：必须设置响应类型为 'blob' 来处理文件流
    responseType: 'blob'
  });
};
